"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Global_1 = require("../models/Global");
async function default_1(call) {
    // 当前用户排行和前n的排名
    let n = 50;
    let op = await Global_1.Global.collection('Rank').aggregate([
        // 按win和kill进行排序
        {
            $sort: {
                'win': -1,
                'kill': -1
            }
        },
        // 将行转化为集合存储
        {
            "$group": {
                "_id": null,
                "tableA": {
                    "$push": "$$ROOT"
                }
            }
        },
        // 拆分集合为行，同时带上数组下标
        {
            $unwind: {
                path: '$tableA',
                includeArrayIndex: 'arrayIndex'
            }
        },
        {
            $project: {
                '_id': '$tableA._id',
                'openid': '$tableA.openid',
                'nickname': '$tableA.nickname',
                'avatar': '$tableA.avatar',
                'gender': '$tableA.gender',
                'win': '$tableA.win',
                'kill': '$tableA.kill',
                'createTime': '$tableA.createTime',
                'updateTime': '$tableA.updateTime',
                'rank': { $add: ['$arrayIndex', 1] }
            }
        },
        // 对同一数据进行两次不同操作
        {
            $facet: {
                'my': [
                    {
                        $match: {
                            'openid': call.req.openid
                        }
                    }
                ],
                // 获取前n的排名
                'top': [{
                        $limit: n
                    }, {
                        $skip: 0
                    }
                ]
            }
        }
    ]).toArray();
    const res = op[0];
    call.succ({ my: res['my'], top: res['top'] });
}
exports.default = default_1;
